package main

// 同一个函数返回的多个闭包共享该函数的局部变量
// 对象附有行为的数据,闭包是附有数据的行为

func main() {
	f, g := fa2(0)
	s, k := fa2(0)
	println(f(1), g(2))
	println(s(1), k(2))
}

func fa2(base int) (func(int) int, func(int) int) {
	println(&base, base)
	add := func(i int) int {
		base += i
		println(&base, base)
		return base
	}

	sub := func(i int) int {
		base -= i
		println(&base, base)
		return base
	}
	return add, sub
}
